package com.toidep.videoplayer.util;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.IBinder;
import android.widget.Toast;

//import android.content.Context;
//import android.net.ConnectivityManager;
//import android.net.NetworkInfo;
//import android.telephony.TelephonyManager;
//
//public class ConnectionChangeReceiver {
//
//    /*
//     * HACKISH: These constants aren't yet available in my API level (7), but I need to handle these cases if they come up, on newer versions
//     */
//    public static final int NETWORK_TYPE_EHRPD=14; // Level 11
//    public static final int NETWORK_TYPE_EVDO_B=12; // Level 9
//    public static final int NETWORK_TYPE_HSPAP=15; // Level 13
//    public static final int NETWORK_TYPE_IDEN=11; // Level 8
//    public static final int NETWORK_TYPE_LTE=13; // Level 11
//
//    /**
//     * Check if there is any connectivity
//     * @param context
//     * @return
//     */
//    public static boolean isConnected(Context context){
//        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//        NetworkInfo info = cm.getActiveNetworkInfo();
//        return (info != null && info.isConnected());
//    }
//    /**
//     * Check if there is fast connectivity
//     * @param context
//     * @return
//     */
//    public static boolean isConnectedFast(Context context){
//        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//        NetworkInfo info = cm.getActiveNetworkInfo();
//        return (info != null && info.isConnected() && ConnectionChangeReceiver.isConnectionFast(info.getType(),info.getSubtype()));
//    }
//
//    /**
//     * Check if the connection is fast
//     * @param type
//     * @param subType
//     * @return
//     */
//    public static boolean isConnectionFast(int type, int subType){
//        if(type==ConnectivityManager.TYPE_WIFI){
//            System.out.println("CONNECTED VIA WIFI");
//            return true;
//        }else if(type==ConnectivityManager.TYPE_MOBILE){
//            switch(subType){
//            case TelephonyManager.NETWORK_TYPE_1xRTT:
//                return false; // ~ 50-100 kbps
//            case TelephonyManager.NETWORK_TYPE_CDMA:
//                return false; // ~ 14-64 kbps
//            case TelephonyManager.NETWORK_TYPE_EDGE:
//                return false; // ~ 50-100 kbps
//            case TelephonyManager.NETWORK_TYPE_EVDO_0:
//                return true; // ~ 400-1000 kbps
//            case TelephonyManager.NETWORK_TYPE_EVDO_A:
//                return true; // ~ 600-1400 kbps
//            case TelephonyManager.NETWORK_TYPE_GPRS:
//                return false; // ~ 100 kbps
//            case TelephonyManager.NETWORK_TYPE_HSDPA:
//                return true; // ~ 2-14 Mbps
//            case TelephonyManager.NETWORK_TYPE_HSPA:
//                return true; // ~ 700-1700 kbps
//            case TelephonyManager.NETWORK_TYPE_HSUPA:
//                return true; // ~ 1-23 Mbps
//            case TelephonyManager.NETWORK_TYPE_UMTS:
//                return true; // ~ 400-7000 kbps
//            // NOT AVAILABLE YET IN API LEVEL 7
//            case ConnectionChangeReceiver.NETWORK_TYPE_EHRPD:
//                return true; // ~ 1-2 Mbps
//            case ConnectionChangeReceiver.NETWORK_TYPE_EVDO_B:
//                return true; // ~ 5 Mbps
//            case ConnectionChangeReceiver.NETWORK_TYPE_HSPAP:
//                return true; // ~ 10-20 Mbps
//            case ConnectionChangeReceiver.NETWORK_TYPE_IDEN:
//                return false; // ~25 kbps 
//            case ConnectionChangeReceiver.NETWORK_TYPE_LTE:
//                return true; // ~ 10+ Mbps
//            // Unknown
//            case TelephonyManager.NETWORK_TYPE_UNKNOWN:
//            default:
//                return false;
//            }
//        }else{
//            return false;
//        }
//    }
//}
public class ConnectionChangeReceiver extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		ConnectivityManager connectivityManager = (ConnectivityManager) context
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
		NetworkInfo mobNetInfo = connectivityManager
				.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
		if (activeNetInfo != null) {

			Toast.makeText(context,
					"Active Network Type : " + activeNetInfo.getTypeName(),
					Toast.LENGTH_SHORT).show();
		}
		if (mobNetInfo != null) {
			Toast.makeText(context,
					"Mobile Network Type : " + mobNetInfo.getTypeName(),
					Toast.LENGTH_SHORT).show();
		}
	}

	@Override
	public IBinder peekService(Context myContext, Intent service) {
		// TODO Auto-generated method stub
		return super.peekService(myContext, service);
	}

}